---
id: 501
title: 常见问题
---

import useBaseUrl from "@docusaurus/useBaseUrl";
import Tag from "@site/src/components/Tag.js";
import Highlight from '@site/src/components/Highlight.js';


#### 1、Modbus地址可以只写地址0吗，一定要写成类似400001?

按照PLC Modbus寄存器的格式，以区域号为起始字符，后续加上（寄存器地址+1）  
所以一定要写成400001

#### 2、数据如何设置小数位

网关提供灵活的脚本式配置转换，可以在变量的读取表达式中进行配置转换 
如果要设置小数位为2，可以填入 
```
Math.Round(raw.ToDecimal(), 2)
```

#### 3、源码打开razor文件时，不出现智能提示，有waring警告(波浪线)

VS的bug导致的，可以尝试升级vs，把工程目录下的.vs文件夹已经全部的bin OR obj 删除后，重新打开解决方案

#### 4、报警属性中的报警约束如何定义

报警约束和变量表达式类似，填入脚本，返回值为true时，报警生效


  ```csharp
  
  //新建testInt1,testInt2两个变量

  //在testInt1的高高报警值为1，开启使能
  //在testInt1的高高报警约束中定义testInt2>10


  //testInt1为8,testInt2为11时，产生testInt1报警
  //testInt1为8,testInt2为10时，不会产生testInt1报警
  ```

#### 5、启动项目之后，驱动调试页面没有任何信息，设备选择插件时也不出现任何选择项

网关插件未编译，需要编译解决方案，查看入门指南；或者插件未能成功拷贝到插件目录(Plugins)

#### 6、linux部署时发现无法启动，报错：The type initializer for 'Microsoft.Data.sqlite.Sqliteconnection' threw an exception.

根据微软官方提供的dotnet8.0 支持的[操作系统列表](https://github.com/dotnet/core/blob/main/release-notes/8.0/supported-os.md#linux)

选择一种解决方案：

1、升级操作系统，

2、升级sqlite版本，(感谢群友的文章)查看博客 (https://blog.csdn.net/qq_40817472/article/details/141648765)

3、使用net6发布ThingsGateway项目


#### 7、我想在当前设备中添加变量，该变量表示设备是否在线，不参与通讯

在变量地址中填写``DeviceStatus``，固定值为``DeviceStatusEnum``类型，如果需要bool类型，还可以在读取表达式中写
```
(DeviceStatusEnum)raw==DeviceStatusEnum.OnLine
```


#### 8、我想在当前设备中添加变量，该变量作为计算点，不参与通讯

在变量地址中填写``Script``，在读取表达式中填写所需计算过程

```

不限制是否当前设备，只要变量名称存在，就可以正常运算
下面示例是 两个变量值相加


GlobalData.ReadOnlyVariables["变量名称1"].Value.ToInt()+GlobalData.ReadOnlyVariables["变量名称2"].Value.ToInt()

```

同理，在内存变量插件中，也可以这样写。
